1. Field of Invention
The present invention relates generally to methods and apparatus for providing application programming interfaces in computer systems. More particularly, the present invention relates to a core application programming interface suitable for use by different application programming interfaces in a computing system.
2. Description of the Related Art
The use of networked computing systems is increasing as the use of personal computers is becoming more prevalent. By networking, or otherwise linking, computer systems together, resources such as software applications may be shared by multiple users, i.e., computer systems. The sharing of resources over a network generally enables each networked user to more efficiently utilize and allocate resources that are local to the user.
In an effort to consolidate resources in a networked computing system, network computers are being developed. Such network computers are typically used as clients within a network. Network computers are generally systems which are arranged to access and operate using mostly remote databases and resources, which are often servers on the network. Typically, a platform such as a network computer does not have local access to a writable storage device, e.g., a disk drive. As such, a user who uses a network computer may access and store information on a remote database that is shared by any number of users. As a result, it is not necessary for the network computer to, for example, have significant writable local storage capabilities.
The interfaces, e.g., application programming interfaces (APIs), associated with allowing applications, or entries, to be published on and retrieved from a shared database often include a relatively large number of methods. For example, a group of methods are typically needed to allow a client to publish entries to, search for entries on, and retrieve entries from a shared database. Similarly, a group of methods are generally needed to allow a server to publish entries to, search for entries on, and retrieve entries from a shared database.
Resources needed to provide the methods used to publish entries, search for entries, and retrieve entries may be significant. Specifically, keeping the functionality associated with a client API and the functionality associated with a server API on a system database may require a substantial amount of resources on the system database. In general, some of the methods associated with a client API and the methods associated with a server API are common. That is, some methods are the same irregardless of whether they are implemented with respect to a client or implemented with respect to a server. Therefore, essentially separately maintaining the functionality for a server API and a client API may be inefficient as it may be difficult to maintain consistency of use and function of the relevant methods.
A method is typically associated with a specific class or interface. Classes and interfaces are arranged in hierarchies, i.e., class hierarchies. In particular, classes and interfaces that are associated with a client API are part of one hierarchy, while classes and interfaces that are associated with a server API are part of another hierarchy. Hence, in some cases, the same class type may be associated with two different class hierarchies. Such redundancy in class type, like redundancy in methods, may be undesirable in terms of maintaining consistency of use and consistency in the functions of the classes.
As such, what is desired is a method and an apparatus for efficiently organizing class hierarchies and APIs on a system database. Specifically, what is desired is a method and an apparatus for developing a core API and, hence, a class hierarchy, for use with a system database such that resources may be efficiently used on the system database.
The present invention relates generally to defining a class hierarchy which allows a core application programming interface to be defined within an object based system. According to one aspect of the present invention, a class structure in an object based system is arranged to provide application programming interfaces which enable access to a system database. The class structure includes a first set of classes that define a core application programming interface, a second set of classes that define a client application programming interface, and a third set of classes that define a server application programming interface. The second set of classes includes the first set of classes, and the third set of classes includes the second set of classes. In one embodiment, the first set of classes includes interfaces. In such an embodiment, the interfaces may include an Entry interface.
In another embodiment, the first set of classes includes at least one abstract class and at least one concrete class. When the first set of classes includes abstract classes and concrete classes, the abstract class may include a BaseEntry class, while the concrete class may include a SystemDatabase class, a SystemTree class, a Query class, and a PropertyQuery class. In such an embodiment, the second set of classes may include a SystemEntry class that is a concrete class.
These and other advantages of the present invention will become apparent upon reading the following detailed descriptions and studying the various figures of the drawings.